import svelte from 'rollup-plugin-svelte';
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import livereload from 'rollup-plugin-livereload';
import { terser } from 'rollup-plugin-terser';
import css from 'rollup-plugin-css-only';
import alias from 'rollup-plugin-alias';
import path from 'path';
import babel from 'rollup-plugin-babel';
const production = !process.env.ROLLUP_WATCH;

function serve() {
	let server;

	function toExit() {
		if (server) server.kill(0);
	}

	return {
		writeBundle() {
			if (server) return;
			server = require('child_process').spawn('npm', ['run', 'start'], {
				stdio: ['ignore', 'inherit', 'inherit'],
				shell: true
			});
			process.on('SIGTERM', toExit);
			process.on('exit', toExit);
		}
	};
}

export default {
	input: 'src/main.js',
	output: {
		sourcemap: true,
		format: 'iife',
		name: 'app',
		file: 'public/build/bundle.js',
		inlineDynamicImports: true   // 允许行内导入
	},
	plugins: [

		svelte({
			compilerOptions: {
				dev: !production
			}
		}),

		css({ output: 'bundle.css' }),


		alias({
			resolve: ['.js', '.mjs', '.svelte'],
			entries: [
				{ find: '@', replacement: path.resolve(__dirname, './src') }
			]
		}),
		babel({
			exclude: 'node_modules/**',
		}),

		resolve({
			browser: true,
			dedupe: ['svelte'],
			extensions: ['.svelte'],
			exclude: '**/node_modules/**'
		}),
		commonjs(),
		// 生产与开发区别配置
		!production && serve(),
		!production && livereload('public'),
		production && terser(),
	],
	watch: {
		clearScreen: false
	}
};
